package com.dyna.core.convert;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
 * 对象转换器接口
 * @param <S> 源类型
 * @param <T> 目标类型
 */
@FunctionalInterface 
public interface BeanConverter<S, T> {
    T convert(S source);
    
    /**
     * 批量转换方法（默认实现）
     */
    default List<T> convertList(Collection<S> sources) {
        if (sources == null || sources.isEmpty())  {
            return Collections.emptyList();
        }
        List<T> targets = new ArrayList<>(sources.size());
        for (S source : sources) {
            targets.add(convert(source)); 
        }
        return targets;
    }
}